package classes;

import java.util.ArrayList;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;

import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;
@Entity
@Table(name="Produto")
public class Produto {
	
	@Id @GeneratedValue
	Long id;
	String tipo;
	@OneToMany(mappedBy = "produto", targetEntity =Assinatura.class, 
			fetch = FetchType.LAZY, cascade=CascadeType.ALL)
	List<Assinatura> assinaturas = new ArrayList<Assinatura>();
	@ManyToOne(fetch = FetchType.EAGER)
	@JoinColumn(name="id_empresa", insertable = true, updatable = true)
	@Fetch(FetchMode.JOIN)
	private EmpresaCliente empresa;
	
	public EmpresaCliente getEmpresa() {
		return empresa;
	}

	public void setEmpresa(EmpresaCliente empresa) {
		this.empresa = empresa;
	}

	public List<Assinatura> getAssinaturas() {
		return assinaturas;
	}
	
	public void setAssinaturas(List<Assinatura> assinaturas) {
		this.assinaturas = assinaturas;
	}
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public String getTipo() {
		return tipo;
	}
	public void setTipo(String tipo) {
		this.tipo = tipo;
	}
	

}
